/*
 * To change ApplicationMBean template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.brain.core.view.mbean;

import com.brain.capa.dto.CursoDto;
import com.brain.capa.dto.RequerimientoCapaDto;
import com.brain.capa.manager.CursoManager;
import com.brain.capa.manager.RequerimientoCapaManager;
import com.brain.clima.view.util.ConstantesClima;
import com.brain.core.common.UtilCore;
import com.brain.core.configuracion.WebServletContextListener;
import com.brain.core.dto.*;
import com.brain.core.exception.DAOException;
import com.brain.core.manager.*;
import com.brain.core.view.util.ApplicationHelper;
import com.brain.core.view.util.ConstantesCore;
import com.brain.sgc.dto.MedioDifusionDto;
import com.brain.sgc.dto.PersonaDto;
import com.brain.sgc.dto.PuestoDto;
import com.brain.sgc.manager.EstudioManager;
import com.brain.sgc.manager.ExperienciaManager;
import com.brain.sgc.manager.MedioDifusionManager;
import com.brain.sgc.manager.PersonaManager;
import com.brain.sgc.manager.PuestoManager;
import com.brain.sgc.view.util.ConstantesSgc;

import java.io.Serializable;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.sql.Connection;
import java.text.SimpleDateFormat;


import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.TimeZone;
import javax.naming.InitialContext;
import javax.sql.DataSource;
import org.apache.log4j.Logger;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;

/**
 *
 * @author Indra
 */
@Controller("applicationMBean")
@Scope("application")
public class ApplicationMBean implements Serializable {

    private static Logger logger = Logger.getLogger(ApplicationMBean.class);
    private String nombreSistema = "SISTEMA DE GESTIÓN POR COMPETENCIAS";
    private String dataSourceName = "jndi/sgc360";
    private Boolean habilitarIdioma = Boolean.FALSE;
    private Boolean habilitarTema = Boolean.FALSE;
    private String formatoFechaHora = "dd/MM/yyyy HH:mm";
    private String formatoFechaHoraSegundos = "dd/MM/yyyy HH:mm:ss";
    private String formatoFecha = "dd/MM/yyyy";
    private String formatoHora = "HH:mm:ss";
    private String formatoMontos = "#,###.00";
    private String formatoMontosTipoCambio = "#,###.0000";
    private String formatoMontoOferta = "#,###.0000";
    private String mailServidor = "smtp.gmail.com";
    private String mailFrom = "web.brain.jbiss@gmail.com";
    private String mailFromPwd = "web.brain.jbiss";
    private String mailPuerto = "465";
    private String mailFromName = "WEB BRAIN CORE INC";
    private int precisionDecimales = 2;
    private int precisionDecimalesOferta = 8;
    private TimeZone timeZone;
    private String archivoConfiguracion;
    private List<ParametroDto> siParametrosActivos;
    private List<CatalogoParametroDto> siCatalogosActivos;
    private List<UbigeoDto> siPaisesActivos;
    private List<RolDto> siRolesActivos;
    private List<OrganizacionDto> siOrganizacionesActivas;
    private List<OrganizacionDetaDto> siSubOrganizacionesActivas;
    private String rutaArchivos = "D:\\\\archivos\\";
    private String rutaJaspers = "D:\\\\jaspers\\";
    private String rutaLogos = "D:\\\\logos\\";
    private List<UsuarioDto> siUsuariosActivos;
    private String tamanoAplicacion = "80%";
    private List<TipoCambioDto> listaUltimosTiposCambios;
    private String estilo = "FONT-FAMILY: 'Arial';font-size: 10px;text-transform:uppercase;";
    private String estiloLabel = "FONT-FAMILY: 'Arial';color: #000000;font-size: 10px;text-transform:uppercase;";
    private String estiloLink = "FONT-FAMILY: 'Arial';font-weight: bold; font-size: 10px;text-decoration: underline;color: #cc0000;text-transform:uppercase;";
    private String estiloLinkTable = "FONT-FAMILY: 'Arial';font-size: 10px;text-transform:uppercase;"; //text-decoration: underline;
    private String estiloObligatorio = "FONT-FAMILY:'Arial'; color:#000000;font-size:10px;border-color: #787878;text-transform:uppercase;";
    private String estiloMensaje = "FONT-FAMILY: 'Arial';font-weight: bold; color: #004276;font-size: 9px;text-transform:uppercase;";
    private String estiloMenu = "FONT-FAMILY:'Arial'; color:#004492;font-size:9px;font-weight: bold;";
    private String estiloTitulo = "FONT-FAMILY:'Arial'; color:#004492;font-size:10px;";
    private String cssBotonAzul = "background: #004492;color: white;font-size: 11px;text-transform:uppercase;font-weight: bold;text-align: center;height: 27px;font-family: arial,sans-serif";
    private String cssBotonRojo = "background: #D14836;color: white;font-size: 11x;text-transform:uppercase;font-weight: bold;text-align: center;height: 27px;font-family: arial,sans-serif";
    private String cssBotonCeleste = "background: #4297d7;color: white;font-size: 11x;text-transform:uppercase;font-weight: bold;text-align: center;height: 27px;font-family: arial,sans-serif";
    private String cssBotonVerde = "background: #008200;color: white;font-size: 11x;text-transform:uppercase;font-weight: bold;height: 27px;font-family: arial,sans-serif";
    private String cssBotonPlomo = "background: #787878;color: white;font-size: 11px;text-transform:uppercase;font-weight: bold;text-align: center;height: 27px;font-family: arial,sans-serif";
    private String cssBotonNaranja = "background: #fc5b04;color: white;font-size: 11px;text-transform:uppercase;font-weight: bold;text-align: center;height: 27px;font-family: arial,sans-serif";
    private String cssBotonMorado = "background: #008200;color: white;font-size: 11px;text-transform:uppercase;font-weight: bold;text-align: center;height: 15px;font-family: arial,sans-serif";
    private String cssOrganizacionActual = "background: #FFFFF;color: #008200;font-size: 13px;text-transform:uppercase;font-weight: bold;text-align: center;height: 15px;font-family: arial,sans-serif";
    private String cssBotonTransaccion = "background: #E6AA2D;color: white;font-size: 11px;text-transform:uppercase;font-weight: bold;text-align: center;height: 35px;font-family: arial,sans-serif";
    private String cssBotonAtras = "background: #787878;color: white;font-size: 11px;text-transform:uppercase;font-weight: bold;text-align: center;height: 35px;font-family: arial,sans-serif";
    private String cssBotonBusqueda = "background: #E6AA2D;color: white;font-size: 11x;text-transform:uppercase;font-weight: bold;text-align: center;height: 35px;font-family: arial,sans-serif";
    private String cssBotonNuevo = "background: #E6AA2D;color: white;font-size: 11x;text-transform:uppercase;font-weight: bold;text-align: center;height: 35px;font-family: arial,sans-serif";
    private String cssBotonActualizar = "background: #E6AA2D;color: white;font-size: 11x;text-transform:uppercase;font-weight: bold;height: 35px;font-family: arial,sans-serif";
    private String cssBotonAgregar = "background: #E6AA2D;color: white;font-size: 11x;text-transform:uppercase;font-weight: bold;height: 35px;font-family: arial,sans-serif";
    private String cssBotonImprimir = "background: #E6AA2D;color: white;font-size: 11px;text-transform:uppercase;font-weight: bold;text-align: center;height: 35px;font-family: arial,sans-serif";
    private String keyNuevo = "N";
    private String keyRetroceder = "R";
    private String keyGuardar = "G";
    private String keyBuscar = "B";

    public ApplicationMBean() {
    }

    public String getArchivoConfiguracion() {
        return archivoConfiguracion;
    }

    public void setArchivoConfiguracion(String archivoConfiguracion) {
        this.archivoConfiguracion = archivoConfiguracion;
    }

    public String getEstilo() {
        return estilo;
    }

    public void setEstilo(String estilo) {
        this.estilo = estilo;
    }

    public String getEstiloLabel() {
        return estiloLabel;
    }

    public void setEstiloLabel(String estiloLabel) {
        this.estiloLabel = estiloLabel;
    }

    public String getEstiloLink() {
        return estiloLink;
    }

    public void setEstiloLink(String estiloLink) {
        this.estiloLink = estiloLink;
    }

    public String getEstiloLinkTable() {
        return estiloLinkTable;
    }

    public void setEstiloLinkTable(String estiloLinkTable) {
        this.estiloLinkTable = estiloLinkTable;
    }

    public String getEstiloMensaje() {
        return estiloMensaje;
    }

    public void setEstiloMensaje(String estiloMensaje) {
        this.estiloMensaje = estiloMensaje;
    }

    public String getEstiloMenu() {
        return estiloMenu;
    }

    public void setEstiloMenu(String estiloMenu) {
        this.estiloMenu = estiloMenu;
    }

    public String getEstiloObligatorio() {
        return estiloObligatorio;
    }

    public void setEstiloObligatorio(String estiloObligatorio) {
        this.estiloObligatorio = estiloObligatorio;
    }

    public String getEstiloTitulo() {
        return estiloTitulo;
    }

    public void setEstiloTitulo(String estiloTitulo) {
        this.estiloTitulo = estiloTitulo;
    }

    public String getFormatoFecha() {
        return formatoFecha;
    }

    public void setFormatoFecha(String formatoFecha) {
        this.formatoFecha = formatoFecha;
    }

    public String getFormatoFechaHora() {
        return formatoFechaHora;
    }

    public void setFormatoFechaHora(String formatoFechaHora) {
        this.formatoFechaHora = formatoFechaHora;
    }

    public String getFormatoFechaHoraSegundos() {
        return formatoFechaHoraSegundos;
    }

    public void setFormatoFechaHoraSegundos(String formatoFechaHoraSegundos) {
        this.formatoFechaHoraSegundos = formatoFechaHoraSegundos;
    }

    public String getFormatoHora() {
        return formatoHora;
    }

    public void setFormatoHora(String formatoHora) {
        this.formatoHora = formatoHora;
    }

    public String getFormatoMontos() {
        return formatoMontos;
    }

    public void setFormatoMontos(String formatoMontos) {
        this.formatoMontos = formatoMontos;
    }

    public Boolean getHabilitarIdioma() {
        return habilitarIdioma;
    }

    public void setHabilitarIdioma(Boolean habilitarIdioma) {
        this.habilitarIdioma = habilitarIdioma;
    }

    public Boolean getHabilitarTema() {
        return habilitarTema;
    }

    public void setHabilitarTema(Boolean habilitarTema) {
        this.habilitarTema = habilitarTema;
    }

    public int getPrecisionDecimales() {
        return precisionDecimales;
    }

    public void setPrecisionDecimales(int precisionDecimales) {
        this.precisionDecimales = precisionDecimales;
    }

    public TimeZone getTimeZone() {
        this.timeZone = TimeZone.getDefault();
        return timeZone;
    }

    public void setTimeZone(TimeZone timeZone) {
        this.timeZone = timeZone;
    }

    public String getCssBotonAzul() {
        return cssBotonAzul;
    }

    public void setCssBotonAzul(String cssBotonAzul) {
        this.cssBotonAzul = cssBotonAzul;
    }

    public String getCssBotonCeleste() {
        return cssBotonCeleste;
    }

    public void setCssBotonCeleste(String cssBotonCeleste) {
        this.cssBotonCeleste = cssBotonCeleste;
    }

    public String getCssBotonNaranja() {
        return cssBotonNaranja;
    }

    public void setCssBotonNaranja(String cssBotonNaranja) {
        this.cssBotonNaranja = cssBotonNaranja;
    }

    public String getCssBotonPlomo() {
        return cssBotonPlomo;
    }

    public void setCssBotonPlomo(String cssBotonPlomo) {
        this.cssBotonPlomo = cssBotonPlomo;
    }

    public String getCssBotonRojo() {
        return cssBotonRojo;
    }

    public void setCssBotonRojo(String cssBotonRojo) {
        this.cssBotonRojo = cssBotonRojo;
    }

    public String getCssBotonVerde() {
        return cssBotonVerde;
    }

    public void setCssBotonVerde(String cssBotonVerde) {
        this.cssBotonVerde = cssBotonVerde;
    }

    public String getTamanoAplicacion() {
        return tamanoAplicacion;
    }

    public void setTamanoAplicacion(String tamanoAplicacion) {
        this.tamanoAplicacion = tamanoAplicacion;
    }

    public List<PuestoDto> autoCompletarPuesto(String query) {

        PuestoManager manager = (PuestoManager) WebServletContextListener.getApplicationContext().getBean("puestoManager");
        List<PuestoDto> results = null;
        try {

            results = manager.obtenerPuestosActivos(query);
        } catch (DAOException ex) {
            logger.error(ex);
            results = new ArrayList<PuestoDto>();
        }
        return results;
    }
    
    public List<CursoDto> autoCompletarCurso(String query) {

        CursoManager manager = (CursoManager) WebServletContextListener.getApplicationContext().getBean("cursoManager");
        List<CursoDto> results = null;
        try {

            results = manager.obtenerCursPublicado(query);
        } catch (DAOException ex) {
            logger.error(ex);
            results = new ArrayList<CursoDto>();
        }
        return results;
    }
    
    public List<PuestoDto> autoCompletarPuestoCritico(String query) {

        PuestoManager manager = (PuestoManager) WebServletContextListener.getApplicationContext().getBean("puestoManager");
        List<PuestoDto> results = null;
        try {

            results = manager.obtenerPuestosCriticos(query);
        } catch (DAOException ex) {
            logger.error(ex);
            results = new ArrayList<PuestoDto>();
        }
        return results;
    }
    
    public List<RequerimientoCapaDto> autoCompletarRequerimiento(String query) {

        RequerimientoCapaManager manager = (RequerimientoCapaManager) WebServletContextListener.getApplicationContext().getBean("requerimientoCapaManager");
        List<RequerimientoCapaDto> results = null;
        try {

            results = manager.obtenerRequerimientos(query);
        } catch (DAOException ex) {
            logger.error(ex);
            results = new ArrayList<RequerimientoCapaDto>();
        }
        return results;
    }

    public List<MedioDifusionDto> autoCompletarMedioDifusion(String query) {

        MedioDifusionManager manager = (MedioDifusionManager) WebServletContextListener.getApplicationContext().getBean("medioDifusionManager");
        List<MedioDifusionDto> results = null;
        try {

            results = manager.obtenerMediosDifusionActivos(query);
        } catch (DAOException ex) {
            logger.error(ex);
            results = new ArrayList<MedioDifusionDto>();
        }
        return results;
    }

    public List<UsuarioDto> autoCompletarUsuarioSgc(String query) {

        UsuarioManager manager = (UsuarioManager) WebServletContextListener.getApplicationContext().getBean("usuarioManager");
        List<UsuarioDto> results = null;
        try {

            results = manager.obtenerUsuariosQueSeanEmpleadosCMAC(query);
        } catch (DAOException ex) {
            logger.error(ex);
            results = new ArrayList<UsuarioDto>();
        }
        return results;
    }
    

    public List<String> autoCompletarInstitucionEstudio(String query) {

        EstudioManager manager = (EstudioManager) WebServletContextListener.getApplicationContext().getBean("estudioManager");
        List<String> results = null;
        try {
            results = manager.obtenerInstitucionesAutocomplete(query);
           
        } catch (DAOException ex) {
            logger.error(ex);
            results = new ArrayList<String>();
        }
        return results;
    }
    
    public List<String> autoCompletarProveedorCapacitacion(String query) {

        RequerimientoCapaManager manager = (RequerimientoCapaManager) WebServletContextListener.getApplicationContext().getBean("requerimientoCapaManager");
        List<String> results = null;
        try {
            results = manager.obtenerProveedoresAutocomplete(query);
           
        } catch (DAOException ex) {
            logger.error(ex);
            results = new ArrayList<String>();
        }
        return results;
    }
    
     public List<String> autoCompletarEmpresaExperiencia(String query) {

        ExperienciaManager manager = (ExperienciaManager) WebServletContextListener.getApplicationContext().getBean("experienciaManager");
        List<String> results = null;
        try {
            results = manager.obtenerEmpresasAutocomplete(query);
           
        } catch (DAOException ex) {
            logger.error(ex);
            results = new ArrayList<String>();
        }
        return results;
    }

    public List<PersonaDto> autoCompletarPersonaSgc(String query) {

        PersonaManager manager = (PersonaManager) WebServletContextListener.getApplicationContext().getBean("personaManager");
        List<PersonaDto> results = null;
        try {

            results = manager.obtenerPersonasAutocomplete(query);
        } catch (DAOException ex) {
            logger.error(ex);
            results = new ArrayList<PersonaDto>();
        }
        return results;
    }
    
    public List<ParametroDto> autoCompletarArea(String query) {

        ParametroManager manager = (ParametroManager) WebServletContextListener.getApplicationContext().getBean("parametroManager");
        List<ParametroDto> results = null;
        try {            
            results = manager.obtenerTodosActivosPorDosNiveles(query, ConstantesSgc.CatalogoParametro.AREA);
        } catch (DAOException ex) {
            logger.error(ex);
            results = new ArrayList<ParametroDto>();
        }
        return results;
    }
    
    public List<PersonaDto> autoCompletarEmpleados(String query) {

        PersonaManager manager = (PersonaManager) WebServletContextListener.getApplicationContext().getBean("personaManager");
        List<PersonaDto> results = null;
        try {

            results = manager.obtenerEmpleadoAutocomplete(query);
        } catch (DAOException ex) {
            logger.error(ex);
            results = new ArrayList<PersonaDto>();
        }
        return results;
    }

    public List<ParametroDto> autoCompletarParametro(String query) {

        ParametroManager manager = (ParametroManager) WebServletContextListener.getApplicationContext().getBean("parametroManager");
        List<ParametroDto> results = null;
        try {
            results = manager.obtenerTodosActivos(query);
        } catch (DAOException ex) {
            logger.error(ex);
            results = new ArrayList<ParametroDto>();
        }
        return results;
    }

    public List<ParametroDto> autoCompletarLinea(String query) {

        ParametroManager manager = (ParametroManager) WebServletContextListener.getApplicationContext().getBean("parametroManager");
        List<ParametroDto> results = null;
        try {
            //results = manager.obtenerTodosActivos(query, ConstantesCore.CatalogoParametro.PRODUCTO_NIVEL_3);
            results = manager.obtenerTodosActivosPorTresNiveles(query, ConstantesCore.CatalogoParametro.PRODUCTO_NIVEL_3);
        } catch (DAOException ex) {
            logger.error(ex);
            results = new ArrayList<ParametroDto>();
        }
        return results;
    }
    
    public List<ParametroDto> autoCompletarCategoriasPreguntas(String query) {

        ParametroManager manager = (ParametroManager) WebServletContextListener.getApplicationContext().getBean("parametroManager");
        List<ParametroDto> results = null;
        try {            
            results = manager.obtenerTodosActivosPorDosNiveles(query, ConstantesClima.CatalogoParametro.CATEGORIAS_PREGUNTAS_ENCUESTAS);
        } catch (DAOException ex) {
            logger.error(ex);
            results = new ArrayList<ParametroDto>();
        }
        return results;
    }

    public List<OrganizacionDto> autoCompletarOrganizacion(String query) {
        OrganizacionManager manager = (OrganizacionManager) WebServletContextListener.getApplicationContext().getBean("organizacionManager");
        List<OrganizacionDto> results = null;
        try {
            results = manager.obtenerTodosPorEstadoPropietario(ConstantesCore.Parametro.ORGANIZACION_ESTADO_ACTIVO, query);
        } catch (DAOException ex) {
            logger.error(ex);
            results = new ArrayList<OrganizacionDto>();
        }
        return results;
    }

    public List<ProcedureDto> autoCompletarProcedure(String query) {
        ProcedureManager manager = (ProcedureManager) WebServletContextListener.getApplicationContext().getBean("procedureManager");
        List<ProcedureDto> results = null;
        try {
            results = manager.obtenerTodos(query);
        } catch (DAOException ex) {
            logger.error(ex);
            results = new ArrayList<ProcedureDto>();
        }
        return results;
    }

    public List<ProductoDto> autoCompletarProducto(String query) {
        ProductoManager manager = (ProductoManager) WebServletContextListener.getApplicationContext().getBean("productoManager");
        List<ProductoDto> results = null;
        try {
            results = manager.obtenerProductosPorQuery(query);
        } catch (DAOException ex) {
            logger.error(ex);
            results = new ArrayList<ProductoDto>();
        }
        return results;
    }

    public List<SocioNegocioDto> autoCompletarRepresentada(String query) {
        List<SocioNegocioDto> results = ApplicationHelper.listaSociosNegocioActivos(3, query);
        return results;
    }

    public List<SocioNegocioDto> autoCompletarCliente(String query) {
        List<SocioNegocioDto> results = ApplicationHelper.listaSociosNegocioActivos(1, query);
        return results;
    }

    public List<SocioNegocioDto> autoCompletarProveedor(String query) {
        List<SocioNegocioDto> results = ApplicationHelper.listaSociosNegocioActivos(2, query);
        return results;
    }

    public List<CatalogoParametroDto> getSiCatalogosActivos() {
        CatalogoParametroManager manager = (CatalogoParametroManager) WebServletContextListener.getApplicationContext().getBean("catalogoParametroManager");
        try {
            return manager.obtenerTodosActivo();
        } catch (DAOException ex) {
            logger.error(ex);
            return new ArrayList<CatalogoParametroDto>();
        }
    }

    public void setSiCatalogosActivos(List<CatalogoParametroDto> siCatalogosActivos) {
        this.siCatalogosActivos = siCatalogosActivos;
    }

    public static Logger getLogger() {
        return logger;
    }

    public static void setLogger(Logger logger) {
        ApplicationMBean.logger = logger;
    }

    public List<OrganizacionDetaDto> getSiSubOrganizacionesActivas(Long organizacion, Long tipo) {
        OrganizacionDetaManager manager = (OrganizacionDetaManager) WebServletContextListener.getApplicationContext().getBean("organizacionDetaManager");
        try {
            return manager.obtenerTodosPorEstado(ConstantesCore.Parametro.SUB_ORGANIZACION_ESTADO_ACTIVO, organizacion, tipo);
        } catch (DAOException ex) {
            logger.error(ex);
            return new ArrayList<OrganizacionDetaDto>();
        }
    }

    public void setSiSubOrganizacionesActivas(List<OrganizacionDetaDto> siSubOrganizacionesActivas) {
        this.siSubOrganizacionesActivas = siSubOrganizacionesActivas;
    }

    public List<OrganizacionDto> getSiOrganizacionesActivas() {
        OrganizacionManager manager = (OrganizacionManager) WebServletContextListener.getApplicationContext().getBean("organizacionManager");
        try {
            return manager.obtenerTodosPorEstado(ConstantesCore.Parametro.ORGANIZACION_ESTADO_ACTIVO);
        } catch (DAOException ex) {
            logger.error(ex);
            return new ArrayList<OrganizacionDto>();
        }
    }

    public void setSiOrganizacionesActivas(List<OrganizacionDto> siOrganizacionesActivas) {
        this.siOrganizacionesActivas = siOrganizacionesActivas;
    }

    public List<UbigeoDto> getSiPaisesActivos() {
        UbigeoManager manager = (UbigeoManager) WebServletContextListener.getApplicationContext().getBean("ubigeoManager");
        try {
            return manager.obtenerPaisesActivos();
        } catch (DAOException ex) {
            logger.error(ex);
            return new ArrayList<UbigeoDto>();
        }
    }

    public void setSiPaisesActivos(List<UbigeoDto> siPaisesActivos) {
        this.siPaisesActivos = siPaisesActivos;
    }

    public List<ParametroDto> getSiParametrosActivos() {
        ParametroManager manager = (ParametroManager) WebServletContextListener.getApplicationContext().getBean("parametroManager");
        try {
            return manager.obtenerTodosActivos();
        } catch (DAOException ex) {
            logger.error(ex);
            return new ArrayList<ParametroDto>();
        }
    }

    public void setSiParametrosActivos(List<ParametroDto> siParametrosActivos) {
        this.siParametrosActivos = siParametrosActivos;
    }

    public List<RolDto> getSiRolesActivos() {
        RolManager manager = (RolManager) WebServletContextListener.getApplicationContext().getBean("rolManager");
        try {
            return manager.obtenerTodosActivos();
        } catch (DAOException ex) {
            logger.error(ex);
            return new ArrayList<RolDto>();
        }
    }

    public void setSiRolesActivos(List<RolDto> siRolesActivos) {
        this.siRolesActivos = siRolesActivos;
    }

    public List<UsuarioDto> getSiUsuariosActivos() {
        UsuarioManager usuarioManager = (UsuarioManager) WebServletContextListener.getApplicationContext().getBean("usuarioManager");
        try {
            return usuarioManager.obtenerConsultores();
        } catch (DAOException ex) {
            logger.error(ex);
            return new ArrayList<UsuarioDto>();
        }
    }

    public List<UsuarioDto> getSiConsultoresActivos(Long organizacion) {
        UsuarioManager usuarioManager = (UsuarioManager) WebServletContextListener.getApplicationContext().getBean("usuarioManager");
        try {
            return usuarioManager.obtenerConsultores();
        } catch (DAOException ex) {
            logger.error(ex);
            return new ArrayList<UsuarioDto>();
        }
    }

    public void setSiUsuariosActivos(List<UsuarioDto> siUsuariosActivos) {
        this.siUsuariosActivos = siUsuariosActivos;
    }

    public String getFormatoMontosTipoCambio() {
        return formatoMontosTipoCambio;
    }

    public void setFormatoMontosTipoCambio(String formatoMontosTipoCambio) {
        this.formatoMontosTipoCambio = formatoMontosTipoCambio;
    }

    public Connection obtenerConexionDataBase() {
        Connection cnx = null;
        try {
            InitialContext initctx = new InitialContext();
            DataSource ds = (DataSource) initctx.lookup(dataSourceName);
            cnx = ds.getConnection();
        } catch (Exception e) {
            cnx = null;
            logger.error(e);
        }

        return cnx;
    }

    public String getFormatoMontoOferta() {
        return formatoMontoOferta;
    }

    public void setFormatoMontoOferta(String formatoMontoOferta) {
        this.formatoMontoOferta = formatoMontoOferta;
    }

    public List<TipoCambioDto> getListaUltimosTiposCambios() {
        List<OrganizacionDto> listaOrganizaciones = getSiOrganizacionesActivas();
        List<TipoCambioDto> listaTiposCambios = new ArrayList<TipoCambioDto>();
        TipoCambioManager tcManager = (TipoCambioManager) WebServletContextListener.getApplicationContext().getBean("tipoCambioManager");
        TipoCambioDto tcVenta = null;
        TipoCambioDto tcCompra = null;
        for (OrganizacionDto o : listaOrganizaciones) {
            try {
                tcVenta = tcManager.obtenerUltimoTipoCambio(o.getId(), ConstantesCore.ValoresDefecto.MONEDA_TIPO_VENTA);
                if (tcVenta != null) {

                    listaTiposCambios.add(formatearTipoCambio(tcVenta));
                }

                tcCompra = tcManager.obtenerUltimoTipoCambio(o.getId(), ConstantesCore.ValoresDefecto.MONEDA_TIPO_COMPRA);
                if (tcCompra != null) {
                    listaTiposCambios.add(formatearTipoCambio(tcCompra));
                }
            } catch (DAOException ex) {
                logger.error(ex);
            }
        }

        return listaTiposCambios;
    }

    private TipoCambioDto formatearTipoCambio(TipoCambioDto tc) {
        tc.setFechaCambioFormateada(UtilCore.Fecha.formatearFecha(tc.getFechaCambio(), this.formatoFechaHora));
        for (TipoCambioDetaDto tcd : tc.getTiposCambioDetaDto()) {
            BigDecimal factor = BigDecimal.valueOf(1L).divide(tcd.getFactor(), this.precisionDecimales, RoundingMode.HALF_UP);
            if (factor.equals(BigDecimal.ONE)) {
                tcd.setTipoCambioCadena(" 1 " + tcd.getMonedaCambioDto().getDescripcion() + " = " + factor + " " + tcd.getMonedaDto().getDescripcion());
            } else {
                tcd.setTipoCambioCadena(" 1 " + tcd.getMonedaCambioDto().getDescripcion() + " = " + factor + " " + tcd.getMonedaDto().getValorCadena());
            }
        }
        return tc;
    }

    public void setListaUltimosTiposCambios(List<TipoCambioDto> listaUltimosTiposCambios) {
        this.listaUltimosTiposCambios = listaUltimosTiposCambios;
    }

    public int getPrecisionDecimalesOferta() {
        return precisionDecimalesOferta;
    }

    public void setPrecisionDecimalesOferta(int precisionDecimalesOferta) {
        this.precisionDecimalesOferta = precisionDecimalesOferta;
    }

    public String getRutaArchivos() {
        if (rutaArchivos == null) {
            ApplicationHelper.cargarParametrosGenerales();
        }
        return rutaArchivos;
    }

    public void setRutaArchivos(String rutaArchivos) {
        this.rutaArchivos = rutaArchivos;
    }

    public String formatFecha(Date fecha) {
        SimpleDateFormat sdf = new SimpleDateFormat(getFormatoFecha());
        sdf.setTimeZone(getTimeZone());
        return sdf.format(fecha);
    }

    public String getDataSourceName() {
        return dataSourceName;
    }

    public void setDataSourceName(String dataSourceName) {
        this.dataSourceName = dataSourceName;
    }

    public String getRutaJaspers() {
        if (rutaJaspers == null) {
            ApplicationHelper.cargarParametrosGenerales();
        }
        return rutaJaspers;
    }

    public void setRutaJaspers(String rutaJaspers) {
        this.rutaJaspers = rutaJaspers;
    }

    public String getRutaLogos() {
        return rutaLogos;
    }

    public void setRutaLogos(String rutaLogos) {
        this.rutaLogos = rutaLogos;
    }

    public String getCssBotonMorado() {
        return cssBotonMorado;
    }

    public void setCssBotonMorado(String cssBotonMorado) {
        this.cssBotonMorado = cssBotonMorado;
    }

    public String getMailFrom() {
        return mailFrom;
    }

    public void setMailFrom(String mailFrom) {
        this.mailFrom = mailFrom;
    }

    public String getMailPuerto() {
        return mailPuerto;
    }

    public void setMailPuerto(String mailPuerto) {
        this.mailPuerto = mailPuerto;
    }

    public String getMailServidor() {
        return mailServidor;
    }

    public void setMailServidor(String mailServidor) {
        this.mailServidor = mailServidor;
    }

    public String getMailFromName() {
        return mailFromName;
    }

    public void setMailFromName(String mailFromName) {
        this.mailFromName = mailFromName;
    }

    public String getMailFromPwd() {
        return mailFromPwd;
    }

    public void setMailFromPwd(String mailFromPwd) {
        this.mailFromPwd = mailFromPwd;
    }

    public String getCssBotonTransaccion() {
        return cssBotonTransaccion;
    }

    public void setCssBotonTransaccion(String cssBotonTransaccion) {
        this.cssBotonTransaccion = cssBotonTransaccion;
    }

    public String getCssBotonActualizar() {
        return cssBotonActualizar;
    }

    public void setCssBotonActualizar(String cssBotonActualizar) {
        this.cssBotonActualizar = cssBotonActualizar;
    }

    public String getCssBotonAgregar() {
        return cssBotonAgregar;
    }

    public void setCssBotonAgregar(String cssBotonAgregar) {
        this.cssBotonAgregar = cssBotonAgregar;
    }

    public String getCssBotonAtras() {
        return cssBotonAtras;
    }

    public void setCssBotonAtras(String cssBotonAtras) {
        this.cssBotonAtras = cssBotonAtras;
    }

    public String getCssBotonBusqueda() {
        return cssBotonBusqueda;
    }

    public void setCssBotonBusqueda(String cssBotonBusqueda) {
        this.cssBotonBusqueda = cssBotonBusqueda;
    }

    public String getCssBotonNuevo() {
        return cssBotonNuevo;
    }

    public void setCssBotonNuevo(String cssBotonNuevo) {
        this.cssBotonNuevo = cssBotonNuevo;
    }

    public String getCssBotonImprimir() {
        return cssBotonImprimir;
    }

    public void setCssBotonImprimir(String cssBotonImprimir) {
        this.cssBotonImprimir = cssBotonImprimir;
    }

    public String getKeyNuevo() {
        return keyNuevo;
    }

    public void setKeyNuevo(String keyNuevo) {
        this.keyNuevo = keyNuevo;
    }

    public String getKeyRetroceder() {
        return keyRetroceder;
    }

    public void setKeyRetroceder(String keyRetroceder) {
        this.keyRetroceder = keyRetroceder;
    }

    public String getKeyGuardar() {
        return keyGuardar;
    }

    public void setKeyGuardar(String keyGuardar) {
        this.keyGuardar = keyGuardar;
    }

    public String getKeyBuscar() {
        return keyBuscar;
    }

    public void setKeyBuscar(String keyBuscar) {
        this.keyBuscar = keyBuscar;
    }

    public String getCssOrganizacionActual() {
        return cssOrganizacionActual;
    }

    public void setCssOrganizacionActual(String cssOrganizacionActual) {
        this.cssOrganizacionActual = cssOrganizacionActual;
    }

    public String getNombreSistema() {
        return nombreSistema;
    }

    public void setNombreSistema(String nombreSistema) {
        this.nombreSistema = nombreSistema;
    }
    
    
}
